Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Migrate Monitor Middleware #1172

Merged
merged 14 commits into from
Oct 9, 2024
Merged

Conversation

Redish101
Copy link
Contributor

@Redish101 Redish101 commented Sep 7, 2024

Description

Migrate monitor middleware from fiber v2 to v3.

Summary by CodeRabbit

  • New Features

    • Introduced a comprehensive monitoring middleware for the Fiber web framework, enabling real-time tracking of system metrics.
    • Added customizable options for the monitoring interface, including title, refresh interval, and custom HTML.
    • Implemented a web-based dashboard displaying CPU usage, memory usage, and response times with dynamic updates.
  • Documentation

    • Added a new README file detailing installation instructions and configuration options for the monitoring middleware.
    • Included examples of how to implement the middleware in a Fiber application.
    • Updated the main README to include a link to the new Monitor middleware documentation.
  • Tests

    • Introduced a suite of unit tests to validate the configuration functionality and monitoring behavior under various conditions.

@Redish101 Redish101 requested a review from a team as a code owner September 7, 2024 23:32
@Redish101 Redish101 requested review from gaby, sixcolors, ReneWerner87 and efectn and removed request for a team September 7, 2024 23:32
Copy link
Contributor

coderabbitai bot commented Sep 7, 2024

Caution

Review failed

The pull request is closed.

Walkthrough

The changes introduce a new monitor middleware for the Fiber web framework, which includes comprehensive documentation in monitor/README.md. It features a configuration structure in monitor/config.go, allowing customization of settings such as title and refresh interval. The middleware is implemented in monitor/monitor.go, which collects system metrics and serves them as JSON or HTML based on the request type. Additional files include monitor/assertions.go for testing utilities and monitor/config_test.go and monitor/monitor_test.go for unit tests, ensuring robust functionality and reliability.

Changes

Files Change Summary
monitor/README.md Added documentation for the monitor middleware, including installation and configuration details.
monitor/config.go Introduced Config struct for middleware configuration, including default values and customization options.
monitor/assertions.go Added AssertEqual function for testing value equality with detailed error reporting.
monitor/config_test.go Implemented unit tests for configuration management, covering default values and customization scenarios.
monitor/monitor.go Created middleware for collecting and serving system metrics, including stats structures and JSON responses.
monitor/monitor_test.go Introduced tests for monitoring functionality, validating responses and performance under various conditions.
README.md Added a new entry for the Monitor middleware in the documentation, including a link to its README file.

Poem

In the meadow, I hop and play,
With metrics bright, we track the day.
The Fiber's strong, the stats are clear,
A dashboard shines, bringing us cheer!
So let’s monitor, with joy we sing,
For every byte and every spring! 🐇📊


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai or @coderabbitai title anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Outside diff range, codebase verification and nitpick comments (1)
monitor/index.go (1)

3-7: Review of import statements.

The import statements are appropriate for the functionality described. However, consider adding a comment to clarify the use of each imported package, especially for less obvious ones like strconv and strings, which are used for formatting and replacing strings in the HTML template.

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 30766e8 and 598d26a.

Files ignored due to path filters (2)
  • monitor/go.mod is excluded by !**/*.mod
  • monitor/go.sum is excluded by !**/*.sum, !**/*.sum
Files selected for processing (4)
  • monitor/README.md (1 hunks)
  • monitor/config.go (1 hunks)
  • monitor/index.go (1 hunks)
  • monitor/monitor.go (1 hunks)
Additional context used
LanguageTool
monitor/README.md

[uncategorized] ~36-~36: Possible missing comma found.
Context: ... for specilt font resource path or URL. also you can use relative path. | `htt...

(AI_HYDRA_LEO_MISSING_COMMA)

Markdownlint
monitor/README.md

16-16: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Additional comments not posted (6)
monitor/README.md (2)

7-10: Badges are correctly implemented.

The badges provide useful, at-a-glance information about the project's status.


43-61: Example usage is clear and effective.

The provided example clearly demonstrates how to integrate the middleware into a Fiber application.

monitor/config.go (1)

66-132: Configuration handling functions are robust.

The functions to handle default and custom configurations are well-implemented, ensuring that sensible defaults are used and edge cases are handled appropriately.

monitor/monitor.go (1)

18-47: Data structures and global variables are appropriately designed.

The data structures for storing system and process statistics are well-designed, and the use of atomic.Value ensures thread safety.

monitor/index.go (2)

9-15: Review of viewBag struct.

The viewBag struct is well-defined and encapsulates all necessary configuration for the HTML template rendering. Each field is appropriately named and matches the expected usage within the newIndex function. This struct helps in maintaining clean and organized code.


30-40: Review of constants and HTML template.

The constants are well-defined and provide sensible defaults for the monitor's configuration. The HTML template is parameterized correctly to allow dynamic content insertion based on the viewBag. Ensure that all placeholders like $TITLE, $TIMEOUT, etc., are replaced correctly in the runtime to prevent any rendering issues.

monitor/README.md Show resolved Hide resolved
monitor/README.md Outdated Show resolved Hide resolved
monitor/config.go Outdated Show resolved Hide resolved
monitor/monitor.go Show resolved Hide resolved
monitor/index.go Show resolved Hide resolved
monitor/index.go Show resolved Hide resolved
@Redish101 Redish101 changed the base branch from main to v3-beta September 7, 2024 23:39
@Redish101 Redish101 mentioned this pull request Sep 7, 2024
@gaby gaby changed the title feat: add montior feat: Migrate Monitor Middleware Sep 10, 2024
Copy link
Member

@gaby gaby left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Few comments. You are also missing the workflow files. See .github/workflows.

monitor/go.mod Show resolved Hide resolved
monitor/README.md Outdated Show resolved Hide resolved
monitor/config.go Outdated Show resolved Hide resolved
@Redish101
Copy link
Contributor Author

Few comments. You are also missing the workflow files. See .github/workflows.

Thank you for the reminder. By the way, should I add test cases for these changes? If so, please understand that I have been quite busy lately, so it might take me a few days to complete the test cases.

@gaby
Copy link
Member

gaby commented Sep 10, 2024

Few comments. You are also missing the workflow files. See .github/workflows.

Thank you for the reminder. By the way, should I add test cases for these changes? If so, please understand that I have been quite busy lately, so it might take me a few days to complete the test cases.

@Redish101 Use the same unit-tests it had before

You can find them here: https://github.com/gofiber/fiber/tree/v2/middleware/monitor

config_test.go and monitor_test.go

You also have to add the test-monitor.yml in the workflows directory

@Redish101
Copy link
Contributor Author

Few comments. You are also missing the workflow files. See .github/workflows.

Thank you for the reminder. By the way, should I add test cases for these changes? If so, please understand that I have been quite busy lately, so it might take me a few days to complete the test cases.

@Redish101 Use the same unit-tests it had before

You can find them here: https://github.com/gofiber/fiber/tree/v2/middleware/monitor

config_test.go and monitor_test.go

You also have to add the test-monitor.yml in the workflows directory

Well, I will add test cases these days.

@Redish101
Copy link
Contributor Author

Few comments. You are also missing the workflow files. See .github/workflows.

Thank you for the reminder. By the way, should I add test cases for these changes? If so, please understand that I have been quite busy lately, so it might take me a few days to complete the test cases.

@Redish101 Use the same unit-tests it had before

You can find them here: https://github.com/gofiber/fiber/tree/v2/middleware/monitor

config_test.go and monitor_test.go

You also have to add the test-monitor.yml in the workflows directory

@gaby I have migrated the test cases from v2 and completed the CI integration. However, some of the test util functions provided by v2 are used here. I feel that these parts might be reused in this repository in the future. Should these util functions be refactored for reuse?

@Redish101 Redish101 requested a review from gaby September 20, 2024 12:33
@gaby
Copy link
Member

gaby commented Oct 6, 2024

@Redish101 Target branch should be main. Let me see if it lets me change it

@gaby gaby changed the base branch from v3-beta to main October 6, 2024 23:46
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🧹 Outside diff range and nitpick comments (6)
monitor/assertions.go (2)

18-19: Enhance function documentation for clarity.

While the current comment briefly describes the function's purpose, it could be more informative. Consider expanding the documentation to include:

  • The purpose of each parameter
  • The behavior when tb is nil
  • The use of the optional description parameter

Example:

// AssertEqual checks if two values are equal and reports any differences.
// It uses reflect.DeepEqual for comparison and provides detailed error messages.
//
// Parameters:
//   - tb: A testing.TB interface. If nil, errors are logged instead of failing the test.
//   - expected: The expected value
//   - actual: The actual value to compare against the expected value
//   - description: Optional. Additional context for the assertion
//
// The function will call tb.Fatal() if the values are not equal and tb is not nil.

19-19: Remove TODO and nolint directive after verification.

The TODO comment suggests verifying if tb can be nil. Since the function already handles this case, it seems the verification has been done. Consider removing the TODO comment and the nolint:thelper directive.

-func AssertEqual(tb testing.TB, expected, actual interface{}, description ...string) { //nolint:thelper // TODO: Verify if tb can be nil
+func AssertEqual(tb testing.TB, expected, actual interface{}, description ...string) {

If there's a specific reason for keeping the nolint:thelper directive, consider adding a comment explaining why.

monitor/config_test.go (4)

77-92: LGTM: Custom font URL setting verified.

This subtest effectively checks the custom font URL setting:

  1. It verifies that a custom font URL can be set correctly.
  2. It ensures all other configuration fields remain at their default values.
  3. The index field is correctly updated with the new font URL.

Suggestion for improvement: Consider using a more realistic font URL for testing, such as a commonly used CDN for web fonts. This could provide a more representative test case.


94-109: LGTM: Custom Chart.js URL setting verified.

This subtest effectively checks the custom Chart.js URL setting:

  1. It verifies that a custom Chart.js URL can be set correctly.
  2. It ensures all other configuration fields remain at their default values.
  3. The index field is correctly updated with the new Chart.js URL.

Suggestions for improvement:

  1. Consider using a more realistic Chart.js URL for testing, such as the official CDN URL.
  2. The test uses "http" instead of "https". For security reasons, it's generally better to use "https" in examples and tests.

111-126: LGTM: Custom head setting verified.

This subtest effectively checks the custom head setting:

  1. It verifies that a custom head can be set correctly.
  2. It ensures all other configuration fields remain at their default values.
  3. The index field is correctly updated with the new custom head.

Suggestion for improvement: Consider using a more realistic HTML snippet for the custom head, such as a <meta> tag or a small <script>. This would provide a more representative test case.


128-161: LGTM: APIOnly flag and Next function settings verified.

Both subtests effectively check their respective settings:

  1. "set api only" subtest:

    • Verifies that the APIOnly flag can be set to true.
    • Ensures all other configuration fields remain at their default values.
  2. "set next" subtest:

    • Verifies that a custom Next function can be set correctly.
    • Checks that the function behaves as expected (always returns true).
    • Ensures all other configuration fields remain at their default values.

Suggestions for improvement:

  1. For the "set next" subtest, consider testing with a more complex Next function that actually uses the fiber.Ctx parameter. This would provide a more realistic test case.
  2. Consider adding a test case where APIOnly is set to true and other customizations are applied simultaneously to ensure they don't interfere with each other.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 598d26a and f6cd2f6.

⛔ Files ignored due to path filters (4)
  • .github/release-drafter-monitor.yml is excluded by !**/*.yml
  • .github/workflows/release-drafter-monitor.yml is excluded by !**/*.yml
  • .github/workflows/test-monitor.yml is excluded by !**/*.yml
  • monitor/go.mod is excluded by !**/*.mod
📒 Files selected for processing (5)
  • monitor/README.md (1 hunks)
  • monitor/assertions.go (1 hunks)
  • monitor/config.go (1 hunks)
  • monitor/config_test.go (1 hunks)
  • monitor/monitor_test.go (1 hunks)
🧰 Additional context used
🪛 LanguageTool
monitor/README.md

[uncategorized] ~36-~36: Possible missing comma found.
Context: ... for specilt font resource path or URL. also you can use relative path. | `htt...

(AI_HYDRA_LEO_MISSING_COMMA)

🪛 Markdownlint
monitor/README.md

16-16: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (12)
monitor/assertions.go (2)

1-16: LGTM: Package declaration and imports are appropriate.

The package name monitor aligns well with the purpose of the file, and the imported packages are relevant for the functionality provided.


1-68: Overall assessment: Good implementation with room for improvement.

The AssertEqual function provides a robust utility for testing, with detailed error reporting and flexibility in handling different testing contexts. The main areas for improvement are:

  1. Enhancing the function documentation for clarity.
  2. Removing the TODO comment and nolint directive after verification.
  3. Considering the use of strings.Builder for potential performance improvements.
  4. Improving error handling and logging, especially when tb is nil.

These changes would further enhance the utility and maintainability of this testing helper.

monitor/README.md (4)

1-11: LGTM: Header section is well-structured.

The header section provides clear metadata and relevant badges, which is helpful for users to quickly understand the package status.


16-19: Specify language for code blocks.

To enhance readability and enable proper syntax highlighting, specify the language for the fenced code block.

Apply this diff to specify the language:

-```
+```bash
 go get -u github.com/gofiber/fiber/v3
 go get -u github.com/gofiber/contrib/monitor
-```
+```
🧰 Tools
🪛 Markdownlint

16-16: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


21-25: LGTM: Signature section is clear and concise.

The function signature for monitor.New() is well-documented and provides the necessary information for users.


39-59: LGTM: Example section is clear and helpful.

The example provided demonstrates how to integrate the monitor middleware into a Fiber application effectively. It's concise and easy to understand, which will be beneficial for users.

monitor/config_test.go (6)

3-8: LGTM: Imports are appropriate and align with migration goals.

The import statements are correct for a test file and include the necessary packages. The use of "github.com/gofiber/fiber/v3" aligns with the PR objective of migrating to Fiber v3.


27-42: LGTM: Comprehensive "set title" subtest.

This subtest effectively verifies that:

  1. A custom title can be set.
  2. All other configuration fields remain at their default values.
  3. The index field is correctly updated with the new title.

The test structure is clear and thorough.


44-58: LGTM: Crucial edge case tested for minimum refresh rate.

This subtest is particularly valuable as it verifies an important edge case:

  1. It attempts to set a refresh rate below the allowed minimum (100ms).
  2. It confirms that the minRefresh value is used instead of the provided value.
  3. It ensures all other configuration fields remain at their default values.

This test helps prevent potential issues with extremely low refresh rates.


60-75: LGTM: Valid refresh rate setting verified.

This subtest effectively complements the previous "set refresh less than default" test:

  1. It verifies that a valid refresh rate (1 second) can be set correctly.
  2. It ensures all other configuration fields remain at their default values.
  3. The index field is correctly updated with the new refresh rate.

Together with the previous test, this provides good coverage for the refresh rate setting functionality.


1-162: Overall: Well-structured and comprehensive test suite for monitor configuration.

This test file provides excellent coverage for the monitor configuration functionality:

  1. All configuration options are thoroughly tested.
  2. Edge cases, such as minimum refresh rate, are properly handled.
  3. The use of subtests and t.Parallel() promotes efficient and organized testing.

Minor suggestions for improvement have been noted in individual test reviews, mainly focusing on using more realistic test data.

One general observation: The AssertEqual function is used throughout the tests. Ensure this is a custom helper function defined elsewhere in the package, as it's not a standard Go testing function.

To verify the AssertEqual function, run:

#!/bin/bash
# Search for the AssertEqual function definition
rg --type go 'func AssertEqual'

10-25: LGTM: Well-structured main test function and comprehensive default config test.

The main test function and the "use default" subtest are well-structured:

  • Use of t.Parallel() is good for test performance.
  • The subtest thoroughly checks all default configuration values.

Note: The AssertEqual function is used for comparisons. Ensure this is a custom helper function defined elsewhere in the package, as it's not a standard Go testing function.

To verify the AssertEqual function, run:

✅ Verification successful

Verified: AssertEqual is confirmed to be a custom helper function defined in monitor/assertions.go.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for the AssertEqual function definition
rg --type go 'func AssertEqual'

Length of output: 192

monitor/assertions.go Outdated Show resolved Hide resolved
monitor/assertions.go Outdated Show resolved Hide resolved
monitor/README.md Show resolved Hide resolved
monitor/config.go Show resolved Hide resolved
monitor/config.go Show resolved Hide resolved
monitor/config.go Outdated Show resolved Hide resolved
monitor/monitor_test.go Show resolved Hide resolved
monitor/monitor_test.go Outdated Show resolved Hide resolved
.github/workflows/test-monitor.yml Outdated Show resolved Hide resolved
monitor/README.md Show resolved Hide resolved
monitor/assertions.go Outdated Show resolved Hide resolved
monitor/config_test.go Show resolved Hide resolved
monitor/monitor_test.go Show resolved Hide resolved
@gaby
Copy link
Member

gaby commented Oct 6, 2024

Tests are failing because both Fiber and Fasthttp only support the latest 2 versions of Golang.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (1)
monitor/README.md (1)

39-58: LGTM: Example is clear, but remove extra spacing.

The example effectively demonstrates how to use the monitor middleware. However, there's an extra empty line that should be removed for consistency.

Apply this diff to remove the extra spacing:

 app := fiber.New()

 app.Use("/monitor", monitor.New())
-
 log.Fatal(app.Listen(":3000"))
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between f6cd2f6 and b5c4678.

⛔ Files ignored due to path filters (3)
  • .github/workflows/test-monitor.yml is excluded by !**/*.yml
  • monitor/go.mod is excluded by !**/*.mod
  • monitor/go.sum is excluded by !**/*.sum, !**/*.sum
📒 Files selected for processing (3)
  • monitor/README.md (1 hunks)
  • monitor/config_test.go (1 hunks)
  • monitor/monitor_test.go (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • monitor/config_test.go
  • monitor/monitor_test.go
🧰 Additional context used
🪛 Markdownlint
monitor/README.md

16-16: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (4)
monitor/README.md (4)

1-11: LGTM: Header section is well-structured and informative.

The header section provides clear identification of the middleware and includes relevant badges, which is helpful for users to quickly assess the project's status.


16-19: Specify language for code blocks.

The fenced code block should specify the language for proper syntax highlighting. This enhances readability and understanding.

Apply this diff to specify the language:

-```
+```bash
 go get -u github.com/gofiber/fiber/v3
 go get -u github.com/gofiber/contrib/monitor
-```
+```
🧰 Tools
🪛 Markdownlint

16-16: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


21-25: LGTM: Signature section is clear and well-formatted.

The function signature for creating a new monitor instance is correctly presented and easy to understand.


29-37: Correct grammatical errors and typos in the configuration table.

There are a few issues in the configuration table that need to be addressed:

  1. Missing comma after "URL" in the FontURL description.
  2. Typo "specilt" in both FontURL and ChartJsURL descriptions.
  3. Typo "montioring" in the APIOnly description.

Apply this diff to correct the grammar and typos:

- | APIOnly    | `bool`                    | Whether the service should expose only the montioring API.                           | `false`                                                                     |
+ | APIOnly    | `bool`                    | Whether the service should expose only the monitoring API.                           | `false`                                                                     |
- | FontURL    | `string`                  | FontURL for specilt font resource path or URL. also you can use relative path.       | `https://fonts.googleapis.com/css2?family=Roboto:wght@400;900&display=swap` |
+ | FontURL    | `string`                  | FontURL for special font resource path or URL, also you can use relative path.       | `https://fonts.googleapis.com/css2?family=Roboto:wght@400;900&display=swap` |
- | ChartJsURL | `string`                  | ChartJsURL for specilt chartjs library, path or URL, also you can use relative path. | `https://cdn.jsdelivr.net/npm/[email protected]/dist/Chart.bundle.min.js`        |
+ | ChartJsURL | `string`                  | ChartJsURL for special chartjs library, path or URL, also you can use relative path. | `https://cdn.jsdelivr.net/npm/[email protected]/dist/Chart.bundle.min.js`        |

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link
Member

@gaby gaby left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@gaby
Copy link
Member

gaby commented Oct 7, 2024

@gofiber/maintainers this is ready for review

@ReneWerner87 ReneWerner87 merged commit 6741a0e into gofiber:main Oct 9, 2024
51 of 59 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✏️ Feature New feature or request
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

3 participants